<?php
function affichage_encadre($type, $texte = null){
    $erreur = false;
    switch($type){
        case "important":
            $texte_commentaire              = "Important !";
            $classe_haut                    = "haut_important";
            $classe_h3                      = "h3_important";
        break;
        case "construction":
            $texte_commentaire              = "Construction !";
            $classe_haut                    = "haut_construction";
            $classe_h3                      = "h3_construction";
            if($texte == null)
                $texte                      = "D&eacute;sol&eacute;, cette page est en cours de construction ou de modifications, veuillez r&eacute;-&eacute;ssayer ult&eacute;rieurement.";
        break;
        default:
            $erreur                         = true;
            ?>
            <span style="color:red;">Erreur : Encadré choisi n'a pas été trouvé !</span>
            <?php
        break;
    }
    //S'il n'y a pas d'erreur, on affiche le tableau
    if($erreur == false){
        ?>
        <!-- <?php echo $texte_commentaire; ?> -->
        <table id="encadre" cellspacing="0">
            <tr>
                <td colspan="3" class="<?php echo $classe_haut; ?>"></td>
            </tr>
            <tr>
                <td class="encadre_bordure"></td>
                <td>
                    <h3 class="<?php echo $classe_h3; ?>">
                        <?php 
                        echo $texte;
                        ?>
                    </h3>
                </td>
                <td class="encadre_bordure"></td>
            </tr>
            <tr>
                <td colspan="3" class="bas_encadre"></td>
            </tr>
        </table>
         <?php
    }
    
}

function age($anniversaire)
{
	$today = date("Y-m-d");
	list($annee_today,$mois_today,$jour_today) = explode("-",$today);
	list($annee_anniv,$mois_anniv,$jour_anniv) = explode("-",$anniversaire);
	
	if($mois_today == $mois_anniv)
	{
		if($jour_today>=$jour_anniv)
		{
			$age = $annee_today - $annee_anniv;
		}
		else
		{
			$age = ($annee_today - $annee_anniv)-1;
		}
	}
	elseif($mois_today>$mois_anniv)
	{
		$age = $annee_today - $annee_anniv;
	}
	else
	{
		$age = ($annee_today - $annee_anniv)-1;
	}
	return $age;
}
//Retourne l'extension d'un fichier
function get_extension($nom) 
{
    $nom = explode(".", $nom);
    $nb = count($nom);
    return strtolower($nom[$nb-1]);
}
//Fonction qui permet de gérer un fichier
function test_fichier($fichier, $extensions_ok, $taille_max_o)
{
    $erreurs = "";
    //Passage de la taille en octets à Mo
    $taille_max_mo = ($taille_max_o / 1024) / 1024;
    //On regarde les erreurs présentes
    switch ($fichier['error']) 
    {
        case 1:
          $erreurs[] = "Votre image doit faire moins de $taille_max_mo Mo !";
          break;
        case 2:
          $erreurs[] = "Votre image doit faire moins de $taille_max_mo Mo !";
          break;
        case 3:
          $erreurs[] = "L'image n'a été que partiellement téléchargé.";
          break;
        case 6:
          $erreurs[] = "Un dossier temporaire est manquant.";
          break;
        case 7:
          $erreurs[] = "Échec de l'écriture du fichier sur le disque.";
          break;
    }
    //On test maintenant l'extension du document
    if(!in_array( get_extension($fichier['name']), $extensions_ok ))
    {
        $erreurs[] = 'Veuillez sélectionner un fichier de type PDF !';
    }
    //On vérifie le poids de l'image
    if($taille_max_o != "")
    {
        if(file_exists($fichier['tmp_name']) and filesize($fichier['tmp_name']) > $taille_max_o)
        {
            $erreurs[] = "Votre fichier doit faire moins de ".$taille_max_mo." Mo !";
        } 
    }
    return $erreurs;
}
//Fonction qui supprime un fichier surle serveur
function supprime_fichier($chemin)
{
    unlink($chemin);
}
//Fonction qui déplace un fichier sur le serveur
function deplace_fichier($fichier, $emplacement, $nom, $extension, &$message)
{
    if(move_uploaded_file($fichier['tmp_name'], $emplacement.$nom.".".$extension)) 
    {
        $retour = true;
        $message = "Fichier envoyé avec succés (<a target='_blank' href='".$emplacement.$nom.".".$extension."'>Voir</a>)";
    } 
    else 
    {
        $retour = false;
        $message = "Impossible d'envoyer le fichier.<br />Veuillez contacter l'administrateur (vérifier que le dossier ".$emplacement." existe avec un chmod 755 (ou 777)).";
    }
    return $retour;
}
//Fonction qui permet d'afficher les pages
function pagination($requete, $page_actuelle, $page_get)
{
    $result = $GLOBALS['bdd']->query($requete);
    $reglage = new reglage(4);
    $valeur = new valeur($reglage->valeur_reglage());
    $limit = $page_actuelle * $valeur->get_nom() - $valeur->get_nom();
	if(mysql_num_rows($result) > $valeur->get_nom())
	{
	   //Si il y a plusieurs pages
		?>
		<center>
			<p style="font-size: 12px; font-style: italic; text-align: center;">
            Aller a la page :
			<?php
			if ($page_actuelle != 1)
			{
    			$no_page_prec = $page_actuelle - 1;
                ?>
    				<a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $no_page_prec);?>">Précédente</a>
    			<?php
			}
		$i = 0;
		$num_page = 1;
		$nb = 1;
        //Tant q'il reste des pages
		while ( $nb > 0)
		{
			if($page_actuelle == $num_page)
			{
			     ?>
                 <b><?php echo $num_page;?></b>
			     <?php
			}
			else
			{
			     ?>
			     <a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $num_page);?>"><?php echo $num_page;?></a>
			     <?php
			}
			$num_page = $num_page + 1;
			$i = $i + $valeur->get_nom();
			$rq = $GLOBALS['bdd']->query($requete." LIMIT ".$i.", ".$valeur->get_nom().";") or die(mysql_error());
			$nb = mysql_num_rows($rq);
		}
		if($page_actuelle != $num_page - 1 && $num_page != 1)
		{
			$no_page_suiv = $page_actuelle + 1;
            ?>
			<a href="<?php echo ajouterParametreGET($_SERVER["REQUEST_URI"], $page_get, $no_page_suiv);?>">Suivante</a>
            <?php
		}
        ?>
        </p>
        <?php
    }
}
// -----------------------------------------
// Ajoute/Modifie un parametre à un URL.
// -----------------------------------------
function ajouterParametreGET($url, $paramNom, $paramValeur)
{
    $urlFinal = "";
    if($paramNom=="")
    {
        $urlFinal = $url;
    }
    else
    {
        $t_url = explode("?",$url);
        if(count($t_url)==1)
        {
            // pas de queryString
            $urlFinal .= $url;
            if(substr($url,strlen($url)-1,strlen($url))!="/")
            {
                $t_url2 = explode("/",$url);
                if(preg_match("/./",$t_url2[count($t_url2)-1])==false)
                {
                    $urlFinal .= "/";
                }
            }
            $urlFinal .= "?".$paramNom."=".$paramValeur;
        }
        else if(count($t_url)==2)
        {
            // il y a une queryString
            $paramAAjouterPresentDansQueryString = "non";
            $t_queryString = explode("&",$t_url[1]);
            foreach($t_queryString as $cle => $coupleNomValeur)
            {
                $t_param = explode("=",$coupleNomValeur);
                if($t_param[0]==$paramNom)
                {
                    $paramAAjouterPresentDansQueryString = "oui";
                }
            }
            if($paramAAjouterPresentDansQueryString=="non")
            {
                // le parametre à ajouter n'existe pas encore dans la queryString
                $urlFinal = $url."&".$paramNom."=".$paramValeur;
            }
            else if($paramAAjouterPresentDansQueryString=="oui")
            {
                // le parametre à ajouter existe déjà dans la queryString
                // donc on va reconstruire l'URL
                $urlFinal = $t_url[0]."?";
                foreach($t_queryString as $cle => $coupleNomValeur)
                {
                    if($cle > 0)
                    {
                        $urlFinal .= "&";
                    }
                    $t_coupleNomValeur = explode("=",$coupleNomValeur);
                    if($t_coupleNomValeur[0]==$paramNom)
                    {
                        $urlFinal .= $paramNom."=".$paramValeur;
                    }
                    else
                    {
                        $urlFinal .= $t_coupleNomValeur[0]."=".$t_coupleNomValeur[1];
                    }
                }
            }
        }
    }
    return $urlFinal;
}
/**
* Fonction qui récupère l'adresse IP du visiteur
*
* @return String Adresse IP 
*/
function IP()
{
    if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        if(strchr($_SERVER['HTTP_X_FORWARDED_FOR'],','))
        {
             $tab=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
             $realip=$tab[0];
        }
        else
        {
            $realip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
    }
    else
    {
    	$realip=$_SERVER['REMOTE_ADDR'];
    }
    
    return $realip;
}
/**
* Générer une nouvelle variable de session
* est utilisée lors de la création ou lors d'une tentative de vol de session
*/
function NewSession()
{
    //On copie la session dans une nouvelle session puis on vide cette nouvelle session
    session_regenerate_id(TRUE);
    $_SESSION = Array();
    
    //Définition de l'adresse IP en session
    $_SESSION['AGENT']    = $_SERVER['HTTP_USER_AGENT'];
    $_SESSION['LANGUAGE'] = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $_SESSION['CHARSET']  = @$_SERVER['HTTP_ACCEPT_CHARSET'];
    $_SESSION['ENCODING'] = $_SERVER['HTTP_ACCEPT_ENCODING'];
    $_SESSION['IP']       = IP();
}

/**
* Correspond à la fonction session_start() mais en version sécurisée
*/
function session(){
    session_start(); 
    //Test si l'ip n'est pas renseigné dans al session
    if(!isset($_SESSION['IP']))
    {
        //Si la session n'a pas été initialisée
        NewSession();
    }
    //Vérificationde l'adresse IP, de l'encodage accepté, des langues acceptés et du navigateur
    elseif(
        $_SESSION['AGENT'] !== $_SERVER['HTTP_USER_AGENT'] ||
        $_SESSION['LANGUAGE'] !== $_SERVER['HTTP_ACCEPT_LANGUAGE'] || 
        $_SESSION['CHARSET'] !== @$_SERVER['HTTP_ACCEPT_CHARSET'] || 
        $_SESSION['ENCODING'] !== $_SERVER['HTTP_ACCEPT_ENCODING'] || 
        $_SESSION['IP'] !== IP())
    {
        //Valeurs de la session
        /*var_dump($_SESSION);
        //Valeurs du navgateur
        var_dump($_SERVER['HTTP_USER_AGENT']);
        var_dump($_SERVER['HTTP_ACCEPT_LANGUAGE']);
        var_dump($_SERVER['HTTP_ACCEPT_CHARSET']);
        var_dump($_SERVER['HTTP_ACCEPT_ENCODING']);
        var_dump(IP());
        die();*/
        //Si une valeur n'est pas correcte, on écrase tout et on réécrit
        NewSession();
        //echo "prb session";
    }
}
//Sécurité de spages d'administration
function securite($niveau_recquis)
{
    $ok = true;
    //$niveau_recquis = 0 ==> Visiteur
    //$niveau_recquis = 1 ==> Administrateur
    //Si il faut un admin pour voir la page
    if($niveau_recquis == 1)
    {
        //On regarde si il est connecté
        if(!isset($_SESSION['administrateur_id']))
        {
            $ok = false;
        }
    }
    if($ok == false)
    {
        ?>
        <h3>Vous n'avez pas les droits nécessaires pour voir cette page !</h3>
        <?php
        exit();
    }
}
?>